<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    

<script>
// ES6+提供了async/await来解决异步编程问题
// async/await其实是Generator/yield的语法糖
// async是异步的意思，它用于修饰函数
// async函数即异步函数，表示函数内部有异步程序
// async函数执行后返回一个Promise对象

// console.log( 1 );
// async function fn1(){
//     console.log( 2 );
// }
// fn1();
// console.log( 3 );
// 1 2 3

// async函数的各种形式：
// let fn2 = async function (){};
// let fn3 = async ()=>{};
// let obj = {
//     name: '小米',
//     say: async function (){
//         console.log( 123 );
//     }
// }
// 。。。

async function test(){
    console.log( 'async函数执行。。。' );

    // 改变p1状态和结果的行为：
    // 1.返回一个非Promise对象值时，p1为成功状态，结果为返回的值
    // return 666;

    // 2.返回一个Promise对象值时，p1的状态和结果跟随返回Promise对象的状态和结果
    // return Promise.resolve(777);
    // return Promise.reject(888);

    // 3.程序报错时，p1为失败状态，结果为报错信息
    // hehe();

    // 4.抛出一个值时，p1为失败状态，结果为抛出的值
    // throw 999;

}
let p1 = test();
p1.then(
    (res)=>{
        console.log( 'p1成功',res );
    },
    (res)=>{
        console.log( 'p1失败',res );
    }
)

</script>
</body>
</html>